www.gusucode.com > Weighted Differential Evolution Algorithm (WDE) > Weighted Differential Evolution Algorithm (WDE)/cc_wde/classic_benchmark_problems/himmelblau.m
function varargout = himmelblau(X,str) % Himmelblau function % % HIMMELBLAU([x1, x2]) returns the value of the value of the % Himmelblau function at the specified points. [x1] and [x2] may % be vectors. The search domain is % % -5 < x_i < 5 % % The four global minima are % % f(x, y) = f( 3.000000000000000, 2.000000000000000) = 0 % f(x, y) = f(-3.779310253377747, -3.283185991286170) = 0 % f(x, y) = f(-2.805118086952745, 3.131312518250573) = 0 % f(x, y) = f( 3.584428340330492, -1.848126526964404) = 0 % Author: Rody P.S. Oldenhuis % Delft University of Technology % E-mail: oldenhuis@dds.nl % Last edited 20/Jul/2009 % if no input is given, return dimensions, bounds and minimum if (nargin == 0) varargout{1} = 2; % # dims varargout{2} = [-5, -5]; % LB varargout{3} = [+5, +5]; % UB varargout{4} = [+3.000000000000000, +2.000000000000000 -3.779310253377747, -3.283185991286170 -2.805118086952745, +3.131312518250573 +3.584428340330492, -1.848126526964404]; % solution varargout{5} = 0; % function value at solution % otherwise, output function value else % keep values in the search domain X(X < -5) = inf; X(X > 5) = inf; % split input vector X into x1, x2 if size(X, 1) == 2 x1 = X(1, :); x2 = X(2, :); else x1 = X(:, 1); x2 = X(:, 2); end % function output varargout{1} = (x1.^2 + x2 - 11).^2 + (x1 + x2.^2 - 7).^2; end end